const express = require('express')
const router = express.Router()
const path = require('path')
const { send } = require('process')


// 获取验证模块
const authorization = require(path.join(process.cwd(), '/modules/authorization'))
const roleService = require(path.join(process.cwd(), '/services/RoleService'))

// 获取角色列表
router.get('/',  function (req, res) {
    roleService.getAllRoles((err, result) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(result, 200, '获取角色列表成功')
    })
})

// 创建角色
router.post('/', function (req, res) {
    if (!req.body.roleName) return res.sendResult(null, 400, "角色名称不能为空")
    roleService.createRole({
        roleName: req.body.roleName,
        roleDesc: req.body.roleDesc
    }, (err, role) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(role, 201,"创建成功")
    })
})

// 通过角色id获取角色详情
router.get('/:id', function(req, res) {
    if (!req.params.id) return res.sendResult(null, 400, '角色ID不能为空')
    if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, '角色ID必须为数字')

    roleService.getRoleById(req.params.id, (err, result) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(result, 200, '角色详情获取成功')
    })
})

// 更新角色信息
router.put('/:id', function (req, res) {
    if (!req.params.id) return res.sendResult(null, 400, '角色ID不能为空')
    if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, '角色ID必须为数字')
    if (!req.body.roleName) return res.sendResult(null, 400, '角色名称不能为空')

    roleService.updateRole({
        id: req.params.id,
        roleName: req.body.roleName,
        roleDesc: req.body.roleDesc
    }, (err, result) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(result, 200, '获取成功')
    })
})

// 删除角色
router.delete('/:id', function (req, res) {
    if (!req.params.id) return res.sendResult(null, 400, '角色ID不能为空')
    if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, '角色ID必须为数字')

    roleService.deleteRole(req.params.id, (err, result) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(result, 200, '删除成功')
    })
})

// 为角色授权
router.post('/:id/rights', function (req, res) {
    if (!req.params.id) return res.sendResult(null, 400, '角色ID不能为空')
    if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, '角色ID必须为数字')

    roleService.updateRoleRight(req.params.id, req.body.rids, (err, newRole) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(null, 200, '角色授权成功')
    })
})

// 删除权限
router.delete('/:id/rights/:rightId', function (req, res) {
    if (!req.params.id) return res.sendResult(null, 400, '角色ID不能为空')
    if (isNaN(parseInt(req.params.id))) return res.sendResult(null, 400, '角色ID必须为数字')
    if (isNaN(parseInt(req.params.rightId))) return res.sendResult(null, 400, '权限ID必须为数字')

    roleService.deleteRoleRight(req.params.id, req.params.rightId, (err, result) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(result, 200, '删除权限成功')
    })
})
module.exports = router
